import JSZip from 'jszip'
import FileSaver from "file-saver"

export function batchDownload(files,fileName) {
  let _this = this;
  let zip = new JSZip();
  let cache = {};
  let promises = [];
  let title = '正在加载压缩文件';
  files.forEach(item => {
    const promise= getImgArrayBuffer(item.url).then(data => {
      // 下载文件, 并存成ArrayBuffer对象(blob)
      zip.file(item.name, data, { binary: true }); // 逐个添加文件
      cache[item.name] = data;
    });
    promises.push(promise);
  });
  Promise.all(promises).then(() => {
    zip.generateAsync({ type: "blob" }).then(content => {
        title = '正在压缩';
        // 生成二进制流
        FileSaver.saveAs(content, fileName); // 利用file-saver保存文件  自定义文件名
        title = '压缩完成';
    });
  }).catch(res=>{
    _this.$message.error('文件压缩失败');
  });
}
//通过url 转为blob格式的数据
export function getImgArrayBuffer(url) {
  // let _this=this;
  return new Promise((resolve, reject) => {
    //通过请求获取文件blob格式
    let xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET", url, true);
    xmlhttp.responseType = "blob";
    xmlhttp.onload = function () {
      if (this.status == 200) {
        resolve(this.response);
      }else{
        reject(this.status);
      }
    };
    xmlhttp.send();
  });
}